package sudoku;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.*;
import javax.swing.border.TitledBorder;

/**
 *
 * @author sabrina
 */
public class TableroSudoku6x6V2 extends javax.swing.JFrame implements IView{
    
    JPanel panelIzq;
    JPanel panelPalabra;
    private JLabel imageLabel;
    private final JButton boton;
    private final JButton boton2;
    private final JButton boton3;
    private final JButton boton4;
    private final JButton boton6;
    private final JButton boton7;
    private final JButton boton8;
    private final JPanel panelDer;
    private javax.swing.JLabel jLabel;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private JTextArea texto2; 
    static JTextField[] text1 = new JTextField[81];
    static int [][] matriz = new int[6][6];    
    
     public TableroSudoku6x6V2() {
        //imagen de fondo
        ImagenFondo imagen=new ImagenFondo();
        imagen.setImage("/imagenes/8.jpg");
        this.setContentPane(imagen);

        //venana
        this.setTitle("Sudoku");
        this.setSize(700,470); //ancho, alto
        this.setLayout(new GridLayout(1,2));
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setVisible(true);
   
        
        //PANEL IZQUIERDO
        panelIzq = new JPanel();
        panelIzq.setSize(800,800);
        panelIzq.setLayout(new GridLayout(6,6));
        panelIzq.setBackground(Color.blue);
        
      
         //agrego textfield al panel   
        for(int i = 0; i < 36; i++) {                  
           
           text1[i] = new JTextField();    //Llemanos el array de cajas de texto
           //(6) PROPIEDADES DE LOS CONTROLES                    
                
           text1[i].setBounds(new Rectangle(50, (i+1)*35, 60, 25));
           panelIzq.add(text1[i]);
             }
            
        
            
        //componentes de los paneles
        boton = new JButton("Inciar Partida");
        boton2 = new JButton("Resolver");
        boton3 = new JButton("Sugerir jugada");
        boton4 = new JButton("Verificar jugada");
        boton6 = new JButton("TOP-TEN");
        boton7 = new JButton("Otros sudokus");
        boton8 = new JButton("Salir");
        jLabel = new javax.swing.JLabel();
        texto2 = new JTextArea(25,10);
        //AREA DE TEXTO
        texto2.setLineWrap(true);
        texto2.setWrapStyleWord(true); 
        texto2.setEditable(false);
         texto2.setBorder(BorderFactory.createEmptyBorder()); 
        texto2.setBackground(new Color(0, 0, 0, 0));  
        texto2.setFont(new java.awt.Font("Arial", Font.PLAIN, 15));
        texto2.setForeground(Color.white);
      
        
        
     
        
       
       
        
        jLabel.setText("Reglas del juego");
        jLabel.setFont(new java.awt.Font("Arial",Font.PLAIN, 20));
        jLabel.setForeground(Color.white);
        texto2.setText("Este juego está compuesto por una cuadrícula de nxn casillas, dividida en regiones."
                + "Partiendo de algunos números ya dispuestos en ciertas casilla,hay que completar las casillas vacías con dígitos del 1 al n sin que se repitan por fila, columna o región."
                + "\n\nRegla 1: hay que completar las casillas vacías con un solo número del 1 al n."
                + "\n\nRegla 2: en una misma fila no puede haber números repetidos. "
                + "\n\nRegla 3: en una misma columna no puede haber números repetidos."
                + "\n\nRegla 4: en una misma región no puede haber números repetidos."
                + "\n\nRegla 5: la solución de un sudoku es única."
                );
   
        
        //se posicionan los botones y labels en el panel
        boton.setBounds(10, 10, 150, 40); 
        boton2.setBounds(10, 90, 150, 40); 
        boton3.setBounds(10, 160, 150, 40); 
        boton4.setBounds(10, 240, 150, 40);  
        boton6.setBounds(10, 320, 150, 40); 
        boton7.setBounds(10, 400, 150, 40); 
        boton8.setBounds(10, 480, 150, 40); 
        jLabel.setBounds(250, 10, 150, 40);
        texto2.setBounds(190, 100, 300, 450);
        
     
       //coloco componentes en panel izquierdo     
        this.getContentPane().add(panelIzq);
               
        //PANEL DERECHO
        panelDer = new JPanel();
        panelDer.setSize(300,470);
        panelDer.setLayout(null);
         
            //color de fondo del panel
        panelDer.setBorder(BorderFactory.createEmptyBorder()); 
        panelDer.setBackground(new Color(0, 0, 0, 0));  
        
                
            //agrego los componentes al panel derecho     
            panelDer.add(boton);           
            panelDer.add(boton2);
            panelDer.add(boton3);
            panelDer.add(boton4);
            panelDer.add(boton6);
            panelDer.add(boton7);
            panelDer.add(boton8);   
            panelDer.add(texto2);
            panelDer.add(jLabel);
             
           
            //coloco componetes en panel derecho
            this.getContentPane().add(panelDer);
            
        LoginListener buttonListener1 = new LoginListener();
    	IController loginController1 = new IniciarNivel6x6V2();
    	loginController1.setView(this);
    	buttonListener1.associate(boton, loginController1);
        
        LoginListener buttonListener2 = new LoginListener();
    	IController loginController2 = new OtrosSudokus4();
    	loginController2.setView(this);
    	buttonListener2.associate(boton7, loginController2);
        
        LoginListener buttonListener3 = new LoginListener();
    	IController loginController3 = new ResolverController6x6V2();
    	loginController3.setView(this);
    	buttonListener3.associate(boton2, loginController3);
        //boton topten
        LoginListener buttonListener4 = new LoginListener();
    	IController loginController4 = new TopTenController6x6V2();
    	loginController4.setView(this);
    	buttonListener4.associate(boton6, loginController4);
         //boton resolver
        LoginListener buttonListener5 = new LoginListener();
    	IController loginController5 = new VerificarController6x6V2();
    	loginController5.setView(this);
    	buttonListener5.associate(boton4, loginController5); 
        
        LoginListener buttonListener6 = new LoginListener();
    	IController loginController6 = new SugerirController6x6V2();
    	loginController6.setView(this);
    	buttonListener6.associate(boton3, loginController6);
         //boton salir
        boton8.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent ae) { 
                System.exit(0); // Y la acción es que salga cuando lo pulsemos 
            } 
        } );
     }

        public void present(String model) {
		JOptionPane.showMessageDialog(null, model);
	} 
   
          public void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
         char car = evt.getKeyChar();
        if((car<'0' || car>'9')) evt.consume();
    }
     
     
  public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(TableroSudoku6x6V2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(TableroSudoku6x6V2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(TableroSudoku6x6V2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(TableroSudoku6x6V2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
          
                new TableroSudoku6x6V2().setVisible(true);
            }
        });
    }
  
        }